Vytvorenie (pretypovanie) triedy alebo typu v Runtime

Otázka od: Richard Siegl

11. 10. 2002 11:08

Nazdar lidi

Potreboval by som takuto "zvrhlost", mam nadefinovanu triedu napr XXX

type XXX = class(TObject)
        kod: integer;
        meno: string;
end;

a typ napr YYY

type YYY = record
        kod:integer;
        meno:string[255];
end;

a potreboval by som za behu aplikacie predefinovat (zmenit) tuto triedu a
typ.
Konkretne pridat dalsiu vlastnost napr "majitel: string" je to vobec mozne a
ak ano ako ?

Rickie

----------------------
Richard Siegl
ELAS spol. s r.o.
Vinohradnícka 6
97101 Prievidza
tel.: +421 46 5151239
Email: rsiegl@elas.sk
Web: www.elas.sk
----------------------

Odpovedá: Alexandr Stefek

11. 10. 2002 11:43

> Nazdar lidi
>
> Potreboval by som takuto "zvrhlost", mam nadefinovanu triedu napr XXX
>
> type XXX = class(TObject)
> kod: integer;
> meno: string;
> end;
>
> a typ napr YYY
>
> type YYY = record
> kod:integer;
> meno:string[255];
> end;
>
> a potreboval by som za behu aplikacie predefinovat (zmenit) tuto triedu a
> typ.
> Konkretne pridat dalsiu vlastnost napr "majitel: string" je to vobec mozne
a
> ak ano ako ?
>
Mozne je leccos, lze zmenit typ tridy za behu. Silne nedoporucuji. Trida na
record
nelze (alespon podle mne). Lze dokonce vytvorit typ trida za behu, take
silne
nedoporucuji. Pokud je skutecne nutne neco takoveho, jak je zde naznaceno,
potom je mozne vyuzit napr. dynamicke pole s pojmenovanymi polozkami a
pristupovat k jednotlivym polozkam prave podle jejich jmena.

Alexandr STEFEK

Odpovedá: Richard Siegl

11. 10. 2002 12:22

Asi sme sa nepochopili ... nechcem zmenit triedu na typ ale pridat do nich
za behu dalsiu vlastnost.

Rickie
----- Original Message -----
From: "Alexandr Stefek" <alex@scova.vabo.cz>
To: <delphi-l@clexpert.cz>
Sent: Friday, October 11, 2002 11:34 AM
Subject: Re: Vytvorenie (pretypovanie) triedy alebo typu v Runtime


> Mozne je leccos, lze zmenit typ tridy za behu. Silne nedoporucuji. Trida
na
> record
> nelze (alespon podle mne). Lze dokonce vytvorit typ trida za behu, take
> silne
> nedoporucuji. Pokud je skutecne nutne neco takoveho, jak je zde naznaceno,
> potom je mozne vyuzit napr. dynamicke pole s pojmenovanymi polozkami a
> pristupovat k jednotlivym polozkam prave podle jejich jmena.
>
> Alexandr STEFEK

Odpovedá: Lubomir Fule

11. 10. 2002 14:12

>
> Asi sme sa nepochopili ... nechcem zmenit triedu na typ ale
> pridat do nich
> za behu dalsiu vlastnost.
>

Delphi ani C++ to urcite neumoznuje... Nemozes predsa za behu zmenit
definiciu triedy, to asi neumoznuje ziadny objektovy jazyk.

Odpovedá: Jan Sebelík

12. 10. 2002 5:02

> Odesílatel: Richard Siegl <rsiegl@elas.sk>
> Potreboval by som takuto "zvrhlost", mam nadefinovanu triedu napr XXX
> a potreboval by som za behu aplikacie predefinovat (zmenit) tuto triedu a
> typ.
> Konkretne pridat dalsiu vlastnost napr "majitel: string" je to vobec mozne a
> ak ano ako ?

To je opravdu zvrhlost.
Ještě by to třeba mohlo podporovat dědičnost  .

Ne, vážně, to samozřejmě nejde.
Proměnné vlastnosti bych ale mohl zavádět stylem

TVarTrida = class (TStringList)
...
V.Values['Majitel']:='nejakejmeno';

To jenom jako princip, asi ne doslova.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================

Odpovedá: Vladimir Michl

12. 11. 2002 17:15

On Fri, 11 Oct 2002, Lubomir Fule wrote:

> >
> > Asi sme sa nepochopili ... nechcem zmenit triedu na typ ale
> > pridat do nich
> > za behu dalsiu vlastnost.
> >
>
> Delphi ani C++ to urcite neumoznuje... Nemozes predsa za behu zmenit
> definiciu triedy, to asi neumoznuje ziadny objektovy jazyk.
                                      ^^^^^^^^^^^^^^^^^^^^^^^
Myslim ze takto se zatim chovaji kompilovane jazyky. U interpretru bych v
tom az takovy problem nevidel za behu menit definici (samozrejme v
jistych mezich, jako napriklad pridat promenou).


---------------------------------------------------------------------------
Vladimír Michl <Vladimir.Michl@hlubocky.del.cz>
Del a.s., Strojírenská 38, Žďár nad Sázavou
pobočka Olomoucká 355, Hlubočky-Mariánské Údolí
tel: +420 585 353 548, fax: +420 585 352 364
http://hlubocky.del.cz

Odpovedá: Petr Langer

12. 11. 2002 18:13

Vladimír Michl wrote:

>> definiciu triedy, to asi neumoznuje ziadny objektovy jazyk.
                                       ^^^^^^^^^^^^^^^^^^^^^^^
> Myslim ze takto se zatim chovaji kompilovane jazyky. U interpretru bych v
> tom az takovy problem nevidel za behu menit definici (samozrejme v
> jistych mezich, jako napriklad pridat promenou).

Mas pravdu, napr. JavaScript, pouzivany zejmena v browserech, umoznuje bez
problemu pridat ci upravit promennou ci metodu.
Neni to sice plne objektovy jazyk, ale zakladni OOP umoznuje a je
interpretovany.

Petr Langer